#include <gdk/gdkx.h>
#include "gdk-pixbuf.h"
-void close_app(GtkWidget *widget, gpointer data)
+int close_app(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
+ return TRUE;
}
-void expose_cb(GtkWidget *drawing_area, GdkEventExpose *evt, gpointer
-data)
+int expose_cb(GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
{
GdkPixbuf *pixbuf;
pixbuf = (GdkPixbuf *) gtk_object_get_data(GTK_OBJECT(drawing_area),
"pixbuf");
-
if(pixbuf->art_pixbuf->has_alpha)
{
gdk_draw_rgb_32_image(drawing_area->window,
else
{
gdk_draw_rgb_image(drawing_area->window,
- drawing_area->style->white_gc,
- evt->area.x, evt->area.y,
- evt->area.width,
- evt->area.height,
- GDK_RGB_DITHER_NORMAL,
- pixbuf->art_pixbuf->pixels +
- (evt->area.y * pixbuf->art_pixbuf->rowstride) +
- (evt->area.x * pixbuf->art_pixbuf->n_channels),
- pixbuf->art_pixbuf->rowstride);
+ drawing_area->style->black_gc,
+ evt->area.x, evt->area.y,
+ evt->area.width,
+ evt->area.height,
+ GDK_RGB_DITHER_NORMAL,
+ pixbuf->art_pixbuf->pixels +
+ (evt->area.y * pixbuf->art_pixbuf->rowstride) +
+ (evt->area.x * pixbuf->art_pixbuf->n_channels),
+ pixbuf->art_pixbuf->rowstride);
}
+ return FALSE;
}
-void configure_cb(GtkWidget *drawing_area, GdkEventConfigure *evt,
-gpointer data)
+int configure_cb(GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
{
GdkPixbuf *pixbuf;
"pixbuf");
g_print("X:%d Y:%d\n", evt->width, evt->height);
-#if 0
- if(((evt->width) != (pixbuf->art_pixbuf->width)) ||
- ((evt->height) != (pixbuf->art_pixbuf->height)))
- gdk_pixbuf_scale(pixbuf, evt->width, evt->height);
-#endif
+ if(evt->width != pixbuf->art_pixbuf->width || evt->height != pixbuf->art_pixbuf->height)
+ {
+ GdkWindow *root;
+ GdkPixbuf *new_pixbuf;
+
+ root = GDK_ROOT_PARENT();
+ new_pixbuf = gdk_pixbuf_get_from_drawable(NULL, root, NULL,
+ 0, 0, 0, 0, evt->width, evt->height);
+ gtk_object_set_data(GTK_OBJECT(drawing_area), "pixbuf", new_pixbuf);
+ gdk_pixbuf_unref(pixbuf);
+ }
+
+ return FALSE;
}
int main(int argc, char **argv)
gtk_widget_set_default_colormap(gdk_rgb_get_cmap());
gtk_widget_set_default_visual(gdk_rgb_get_visual());
- root = gdk_window_foreign_new(GDK_ROOT_WINDOW());
+ root = GDK_ROOT_PARENT();
pixbuf = gdk_pixbuf_get_from_drawable(NULL, root, NULL,
0, 0, 0, 0, 150, 160);
gtk_signal_connect(GTK_OBJECT(window), "delete_event",
GTK_SIGNAL_FUNC(close_app), NULL);
gtk_signal_connect(GTK_OBJECT(window), "destroy",
-
GTK_SIGNAL_FUNC(close_app), NULL);
vbox = gtk_vbox_new(FALSE, 0);